﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ComunesMGI.DataTypes
{
    [Serializable]
    public class DataIncidenteConCampos : DataIncidente
    {
        List<DataCampo> _campos;

        public List<DataCampo> Campos
        {
            get { return _campos; }
            set { _campos = value; }
        }

        public DataIncidenteConCampos(int idIncidente, string descripcion, List<DataCampo> campos)
            : base(idIncidente, descripcion)
        {
            this._campos = campos;
        }

        public override bool Equals(Object obj)
        {
            DataIncidenteConCampos incidente = (DataIncidenteConCampos)obj;
            bool igualesColecciones = true;
            if (incidente.Campos != null && this.Campos != null)
            {
            foreach (DataCampo campo in this.Campos) 
            {
                if (!incidente.Campos.Contains(campo)) 
                {
                    igualesColecciones = false;
                    break;
                }
            }
            if (igualesColecciones)
            {
                foreach (DataCampo campo in incidente.Campos)
                {
                    if (!this.Campos.Contains(campo))
                    {
                        igualesColecciones = false;
                        break;
                    }
                }
            }
            }
            else
            {
                if (incidente.Campos == null && this.Campos != null)
                {
                    igualesColecciones = false;
                }
                else if (incidente.Campos != null && this.Campos == null)
                {
                    igualesColecciones = false;
                }
            }
            return ((this.IdIncidente == incidente.IdIncidente) && (this.Descripcion == incidente.Descripcion) && igualesColecciones) ;

        }
    }
}
